import line from 'helpers/line';

const LOAD = 'redux-example/LOAD';
const LOAD_SUCCESS = 'redux-example/LOAD_SUCCESS';
const LOAD_FAIL = 'redux-example/LOAD_FAIL';

const initialState = {
  loaded: false
};

export default function info(state = initialState, action = {}) {
  switch (action.type) {
    case LOAD:
      return {
        ...state,
        loading: true
      };
    case LOAD_SUCCESS:
      return {
        ...state,
        loading: false,
        loaded: true,
        data: action.result
      };
    case LOAD_FAIL:
      return {
        ...state,
        loading: false,
        loaded: false,
        error: action.error
      };
    default:
      return state;
  }
}

export function isLoaded(globalState) {
  return globalState.info && globalState.info.loaded;
}

export function load() {
  return {
    types: [LOAD, LOAD_SUCCESS, LOAD_FAIL],
    promise: () => line.get('comments', { objectId: 'b7C3ZE48ET' })
  };
}

// function loadSuccess(result) {
//   return {
//     type: LOAD_SUCCESS,
//     result
//   };
// }

// function loadFail(error) {
//   return {
//     type: LOAD_FAIL,
//     error
//   };
// }


// export function load() {
//   return (dispatch) => {
//     return new Promise((resolve, reject) => {
//       return line.get('comments', { objectId: 'b7C3ZE48ET' })
//         .then((result) => {
//           resolve(dispatch(loadSuccess(result)));
//         })
//         .catch((error) => {
//           reject(dispatch(loadFail(error)));
//         });
//     });
//   };
// }

// function loadSuccess(result) {
//   return {
//     type: LOAD_SUCCESS,
//     result
//   };
// }

// function loadFail(error) {
//   return {
//     type: LOAD_FAIL,
//     error
//   };
// }

// export function load() {
//   return dispatch => {
//     line.get('comments', { objectId: 'b7C3ZE48ET' })
//       .then((res) => {
//         dispatch(loadSuccess(res));
//       })
//       .catch((error) => {
//         dispatch(loadFail(error));
//       });
//   };
// }
